Dpto. de Fundamentos del Análisis Económico. Universidad de Alicante
Los métodos estadísticos (modelización) permiten
Encontrar patrones
Interpretar datos
Suponiendo que los datos son normales, la media tiene una distribución normal
Teorema Central del Límite: para datos de cualquier distribución, \(\overline{Y} \overset{a}{\sim} N(\mu, \sigma^2/n)\) cuando \(n \to \infty\)
Tomar muchas remuestras (muestras de Bootstrap) con reemplazamiento
En cada remuestra, se puede calcular cualquier estadístico
Este procedimiento permite generar variación (de remuestras) a partir de una única muestra
La distribución muestral bootstrap NO es la distribución muestral, pero aproxima sus aspectos principales sin supuestos (normalidad, TCL)
library(rsample)
set.seed(101)
UNAmuestra <- tibble(x=rchisq(n=25, df=10))
nboot <- 10
remuestras <- bootstraps(UNAmuestra, times = nboot)
distrib <- list()
for (i in 1:nboot) {
remuestrai <- remuestras$splits[[i]] %>% as_tibble()
mediai <- mean(remuestrai$x)
sdi <- sd(remuestrai$x)
distrib[[i]] <- list(medias = mediai, sds =sdi )
}
distribF <- distrib %>% bind_rows()La regresión lineal predice una respuesta cuantitativa \(\small Y\) como a partir de \(k\) regresores \(X=\) \(\small X_1,X_2,\dots,X_k\)
Supuesto: relación lineal entre \(\small X\) e \(\small Y\) \[ \small Y=\beta_0+\beta_1 X_1+ \dots + \beta_k X_k + \varepsilon \]
Los coeficientes o parámetros del modelo representan
\(\small \beta_0\) (constante): valor esperado de \(\small Y\) cuando \(\small X_1=X_2=\dots=X_k=0\)
\(\small \beta_j\) (pendiente de la línea): cambio medio en \(\small Y\) por un incremento de una unidad en \(\small X_j\) (para \(j=1,...,k\)), ceteris paribus
Objetivo: estimar los coeficientes desconocidos a partir de una muestra
El error de estimación o residuo es \(\small \hat{e}_i = y_i - \hat{y}_i\), donde la predicción a partir del modelo estimado es \(\small \hat{y}_i=\hat{\beta}_0+\hat{\beta}_1 X_1+ \dots + \hat{\beta}_k X_p\)
Los coeficientes estimados son los que minimizan la Suma Cuadrática de Residuos: la suma total de distancias entre los datos observados y predichos
\[ \small SCR=\sum_{i=1}^{n} \hat{e}_i^2= \sum_{i=1}^{n} ( y_i - \hat{y}_i)^2 \]
Se usan para construir intervalos de confianza y estadísticos para contrastar hipótesis sobre los parámetros, p.e., significatividad
Medidas de la precisión del modelo: \(\small MSE\) o \(\small R^2=1-\frac{SCR}{SCT} = \frac{SCE}{SCT}\)
La predicción \(\widehat{y}\) también está sujeta a incertidumbre por la estimación: se puede calcular su error estándar e intervalos de confianzas
Principio jerárquico: al incluir una interacción siempre deben incluirse los factores principales (NO sólo Advertising:Income)
Cuando interactuamos un regresor continuo y uno binario, permitimos que la pendiente del primero sea diferente para cada grupo
No linealidad: incluir transformaciones no lineales
Correlación de los errores: afecta a los errores estándar, no la estimación
Heterocedasticidad: ídem, usar errores estándar robustos
Outliers en la variable de respuesta o en los regresores
Colinearidad: indica que no es posible separar el efecto de cada regresor: eliminar alguno o recombinarlos
No normalidad: TCL, Bootstrap,…
El único supuesto realmente importante es \(\small E[\varepsilon|X]=0\)
Los coeficientes NO se interpretan como cambios en la probabilidad ante cambios unitarios en un regresor (efecto marginal sobre la probabilidad)
PERO su signo (y significatividad) son los mismos que los del efecto marginal
glm() contiene valores predichos, que son probabilidades de \(\small Y=1\)La regresión logística se puede generalizar a situaciones con múltiples clases (modelos multinomiales) con un índice lineal para cada clase \[ \small \Pr(Y=c|X)=\frac{e^{\beta_{0c}+\beta_{1c}X_1+\dots+\beta_{kc}X_k}}{\sum_{l=1}^{C}e^{\beta_{0l}+\beta_{1l}X_1+\dots+\beta_{kl}X_k}} \]
La librería glmnet() permite la estimación de estos modelos
library(glmnet)
x <- model.matrix(Species ~ Sepal.Length + Sepal.Width, data = iris)
mod.glmnet <- glmnet(x = x, y = iris$Species, family = "multinomial",
lambda = 0, type.multinomial = "grouped")
coef(mod.glmnet)
predict(mod.glmnet, newx=x, type = "response") # probabilidad de cada clase
predict(mod.glmnet, newx=x, type = "class") # clase